     HISTORY FILE FOR CHIEF'S INSTALLER PRO FOR WIN16 AND WIN32
     -----------------------------------------------------------

Version 3.10 (January 1997)
---------------------------
1. Fixes some bugs in the ChiefPro IDE.
2. Fixes a minor bug in the main installer.
3. More functionality added to the IDE.
4. New reserved word: $SKIP-OLDER-FILE - to allow the installer
   to skip specified older files.
	e.g.,
	$SKIP-OLDER-FILE=TROOK.CFG;*.DB;TRAGG.TRK

5. New batch command: SHOW-TEXTFILE - to display a text file
   to the user in a custom dialog box.
	e.g.,
	SHOW-TEXTFILE;$SOURCEDIR\UPGRADE.TXT;Upgrade Notice.

6. Extensions to the ChiefPro IDE;
	"Add Files" button - to allow you to add new files to your project
	without opening the file manager
	"Jump to File" button - to allow you to select a file record from
	a listbox instead of clicking on the "next" or "previous" buttons.


Version 3.00 (January 1997)
---------------------------
This is a MAJOR UPGRADE to Chief's Installer Pro. Please do NOT mix
the files in this version with those of any earlier version.

COMPILER
--------
The file format of the ChiefPro compiler has changed. Any existing
compiled batch or INF file must be recompiled with the v3.00 compiler.

Version 3.00 also contains all the following new features;

1. New reserved word: $COPYRIGHT-MESSAGE - this allows you to prepare a
   copyright message in a text file, and to ask the user to agree to it.
   If the user does not agree, the installation will terminate.
   
   Syntax=   
   $COPYRIGHT-MESSAGE;<filename>;<AgreeButtonTitle>;<DisageeButtonTitle>;<DialogTitle>
   
2. New reserved word: $WELCOME-MESSAGE - this allows you to prepare a
   welcome message in a text file. If the user does not wish to
   continue, the installation will terminate.

	Syntax=   
	$WELCOME-MESSAGE;<filename>;<OkButtonTitle>;<CancelButtonTitle>;<DialogTitle>

3. New batch command: POSTMESSAGE, or SENDMESSAGE
   This command allows you to send a message to an active window (identified
   by it's window title. You can use the wildcard ('*') at the beginning of 
   the window title or at the end of it to siginify that any beginning or 
   ending will be okay. See syntax for EXECWAIT-WINDOW for details.

   Syntax=
   POSTMESSAGE;<windowtitle>;<message>

   List of messages:
          MAX        = sw_Maximize
          MIN        = sw_Minimize
          CLOSE      = Wm_Close
          QUIT       = wm_Quit
          HIDE       = sw_Hide
          SHOW       = sw_Show
          TOPMOST    = HWnd_TopMost
          NOTOPMOST  = HWnd_NoTopMost
          SETFOCUS   = SetFocus

4.  New batch command; IF ACTIVEDLL - to check whether a particular DLL is
    loaded (active) and (optionally) to return its handle if it is active.
    If the DLL is active, then its handle is returned in; ACTIVEDLL

	Syntax=
	IF ACTIVEDLL;<dllname>;<command [ACTIVEDLL]>

5. New batch command; IF REGENTRY - to check whether a registry entry exists.
   It only works in respect of string entries (REG_SZ)

	Syntax=
	IF REGENRY;full-entry;<command [REGENTRY]>

6. New Reserved Word: $SPLASH-MESSAGE - to manipulate the dialog used
   for splash messages during the installation.
    Syntax =
    $SPLASH-MESSAGE=filename;left;top;width;height;max-lines-for-each-message

6A. New support for $ELSE (or #ELSE) for use with "IF" commands

7.  New support for declaring and using variables in batch files. A variable
   MUST be declared BEFORE it is used in any way. It is advised that variable
   declarations be done at the beginning of the batch file (either immediately
   before or after #CONST and #DEFINE statements. Below is the support for
   variables;

   1.	Declare a variable		
	#VAR <variablename> or $VAR <variablename>

	e.g.,	#VAR ChiefDir
		$VAR ChiefInstaller

   2.	Assign a value to a variable	
	ASSIGN;@<variablename>=<value>	

	e.g,	ASSIGN;@ChiefDir=C:\CHIEFPRO
		ASSIGN;@ChiefInstaller=Chief's Installer Pro

   3.	Check if a variable has a value
	IF ASSIGNED;@variablename;<command>
	IF NOT-ASSIGNED;@VariableName;<command>

	e.g.,	IF ASSIGNED;@ChiefDir;GOTO CONTINUE
		IF NOT-ASSIGNED;@ChiefDir;GOTO TERMINATE

   4.	Use a variable in an expression
	@%variablename%
	
	e.g.,	IF ASSIGNED;@ChiefDir;CHDIR @%ChiefDir%
		ASSIGN;@ChiefBackup=@%ChiefDir%\BACKUP
		MKDIR @%ChiefBackup%
		COPY @%ChiefDir%\*.CHF @%ChiefBackup%

   5.   Check if a value/variable is the same as another 
        value/variable

        IF EQUAL;@%VARIABLE1%;value;<command>
        IF NOT-EQUAL;@%VARIABLE1%;value;<command>

	e.g.,
	IF EQUAL;@%Customer1%;@%Customer2%;GOTO END;$ELSE GOTO NEXT

   6.   Add a variable/value to a variable value
	CONCAT;dest;value/variable to add

	e.g.,
	CONCAT;@%DestDir%;\TEMP
	CONCAT;@%DestDir%;@%TmpName%


8. Enhancement of $BITMAP - to provide for the display of
   more than 1 bitmap. You can now have multiple $BITMAP
   lines, each pointing to a different bitmap, and (optionally)
   stating whether it should be stretched or not. Each of them
   will be displayed in order as the installation proceeds.

   If the first $BITMAP is not found, then no bitmap will be
   displayed. 

9. Enhancement of colour commands. It is now possible to use predefined 
    strings for some colour values, for these reserved words;

	$BANNER-TEXT-COLOR
	$BANNER-TEXT-BACKGROUND
	$BANNER-WINDOW-BRUSH
	$BANNER-SHADOW-COLOR
	$SMALL-METER-COLOR
	$BIG-METER-COLOR

  The predefined (case insensitive) string values are;
	Cyan
	White
	Black
	Red
	Green
	Blue
	Yellow
	Magenta
	Gray
	LightGray
	DarkGray
	DarkYellow
	Purple
	DarkRed
	DarkBlue
	DarkCyan
	DarkPurple

	examples:
	$BANNER-TEXT-COLOR=Purple
	$BANNER-TEXT-BACKGROUND=black
	$BANNER-WINDOW-BRUSH=yellow
	$BANNER-SHADOW-COLOR=Cyan


10. New batch command: IF DISKLABEL - to check the label of a
    disk/drive.

11. New reserved word: $BUILD-FILE-EX
    This command rebuilds a split file from the
    installation floppies (i.e., without having first to copy
    the files to the hard disk). If any of the parts of a split
    file is not found on the disk on which it is expected, a
    message dialog will come up, prompting the user to insert
    the disk containing that file. ChiefPro will then try to 
    read the file again. This will continue until the file is
    found, or the user clicks "Cancel".

12. New support for native ChiefPro archives, using LZSS compression.
    The support (to archive files) comes via ChiefPro IDE menu items, 
    and the files can be extracted from the archives via the $UNPAK
    reserved word, and the UNPAK batch command.

13. New reserved word: $UNPAK
    - to unpack a ChiefPro packed archive. This can only be used on a
    $DISK line;

    Syntax=
    $DISK#=$UNPAK;<packed file>;<target dir>;[code]

    The codes are the same as those in $UNZIP

14. New batch command: UNPAK

    - see $UNPAK above for syntax.

15. Portuguese and Esperanto language DLLs;

16. New (limited) support for BDE installation - archiving the BDE 
    files from the ChiefPro IDE, and then installing the BDE via
    batch files; sample batch files are supplied.

17. New batch commands: "SET-BDE-INSTALL", and "UNSET-BDE-INSTALL"
    - to mark the beginning and end of BDE install operations. It
    is necessary to do this, so that the BDE installation will not
    be logged for the uninstaller's use - otherwise, the BDE files may
    be removed by the installer, and the user may have other programs 
    that use the BDE. From the SET-BDE-INSTALL command until the next 
    "UNSET-BDE-INSTALL" command, no operation of the installer will be
    logged in the UNINSTAL.LOG file

18. New batch command: IF GETFILE - to retrieve a filename from a
    file dialog box
	Syntax=
	IF GETFILE;Caption;DefaultName;FileMask;<command>

19. New batch command: IF GETDIR - to retrieve a directory name
    from a dialog box
	Syntax=
	IF GETDIR;Caption;DefaultName;<command>

20. New support for "Wizards" - this can be turned on by
    using the "$USE-WIZARDS" command
	Syntax=
	$USE-WIZARDS=<CODE>

21. New reserved word: $MID-BATCH-FILE
    This is almost the same as $BATCH-FILE - except that in this case,
    the specfied batch file is executed immediately after the "Start
    Install" button is clicked - and before the installation of the
    files begins. This is useful for doing some preparatory work (e.g.
    backing up users' configuration files, etc), before the full 
    installation begins

    Note that anything done in a batch file called with this command 
    is not logged in UNINSTAL.LOG - and so it will not be undone by 
    the uninstaller.

22. New batch command: "DLLCOMMAND" - to load a DLL and run a command 
    from it;
	Syntax=
     	DLLCOMMAND;Dll_Name;16/32;FunctionName;Function Parameter
	
	The specified function must be in the following format;
	Returns :  a long integer   (you can access this through ERRORCODE)
	Parameter: a single null terminated string

	e.g.,
	DLLCOMMAND;$dest\dll\protect.dll;16;EncryptInfo;$windir\prog.ccc

23. New support for user DLLs: defaults to 16-bit DLL - "winstalu.dll"
    - but you can use the new $USER-DLL reserved word to point to a 
    different DLL, and to indicate whether it is 16-bit or 32-bit
	Syntax = $USER-DLL=<dllName>;[16/32]
	e.g.,
	$USER-DLL=PROG32.DLL;32
	
	The DLL can export 3 functions, which are called automatically if
	the DLL is loaded successfully;

	1. UserInitProc()  - called before any window appears
	2. UserMidProc()   - called immediately after clicking "start install"
	3. UserEndProc()   - called just before the installer terminates

	* each function takes a single parameter - a null terminated string
	* each function returns a long integer
	* the return value is ignored by the installer
	* the installer automatically passes some (pipe delimited) information 
          to the DLL via the null terminated string parameter - you can use this
	  information, or you may just ignore it - the functions (if found)
	  receive the equivalent of the following;

	UserInitProc() - receives: $SOURCEDIR|$SOURCEDRIVE|$TEMPDIR
	UserMidProc()  - receives: $SOURCEDIR|$SOURCEDRIVE|$TEMPDIR|$DEST
	UserInitProc() - receives: $SOURCEDIR|$SOURCEDRIVE|$TEMPDIR|$DEST

24. New reserved word: $SKIP-NEWER-FILES
    This command causes the installer to skip an existing file which
    is a newer (more recent version) than the version on the installation
    disks. This command takes no parameter.

25.  New support for debug information (while testing your installation)
     through the new reserved word: $DEBUG-LOG
        * this command takes no parameter
	* this MUST be the FIRST line in the WINSTALL.INF file
	* it is to be used for testing purposes only - do not use it
	  in the WINSTALL.INF file that you ship with your application

     When this feature is used, ChiefPro will create an ascii file called
     CHIEFBUG.LOG, in your TEMP directory. This file will contain the details
     of all the failed operations which the installer encounters. If the file
     exists already, it is appended to. If it does not exist, a new one is 
     created.

26. New support for test runs (i.e., files on $DISK lines will not be installed
    but the installer will go through the motions of installing them, and will
    also process other commands, including batch files).

    This is activated by a new reserved word: $TEST-RUN

    	* This command takes no parameter.
	* This is for testing purposes only. Do NOT use this in the WINSTALL.INF 
          file that you ship with your application
---------------------------------------------------------------------------


Version 2.91 (July 1996)
------------------------
Bug in multi-disk installs fixed.


Version 2.90 (July 1996)
------------------------
1. New reserved word: $UPGRADE-VERSION - this is to indicate that the
   current installation is an upgrade version. In this case, the 
   installer will not abort if the available hard disk space is not
   as much as that on the $SPACE line.

   This command was implemented by request. Use with caution!

2. New reserved word: $EXEC-UNINSTALL - to allow the uninstaller to
   execute a program before starting uninstalling the files. The command
   takes the same syntax as $EXECWAIT-WINDOW

3. WINSTALL.DIR - in an effort to reduce the file clutter in the root
   directory of the first installation disk ($DISK1) all the ChiefPro
   files, except SETUP.EXE, can now be put in a subdirectory of the
   first disk. This subdirectory should be called WINSTALL.DIR.
   SETUP.EXE will still be in the root directory. When the user runs
   SETUP.EXE, setup will try to locate \WINSTALL.DIR and then start
   to operate from there.
   
   This feature is optional.

4. Extension of IF INPUT: to optionally take a default start string. 
   This start string must appear in brackets, IMMEDIATELY after the
   prompt.
    e.g.,

     if input "ChiefPro Directory" (C:\CHIEFPRO) SAY You entered INPUT
     if input "ChiefPro Directory" (C:\CHIEF\PRO)==C:\CHIEFPRO SAY INPUT

5. Changes to $INI (and the WRITEINI batch command):
	a. Quotation marks in the entry string will now be treated as literal
	b. if a literal semi-colon is desired, then use 2 hashes (i.e., ##)
	   to depict this - this will be converted automatically;

	e.g., $INI=C:\AUTOEXEC.BAT;user;SET PATH;%path%##$windir##$sysdir##$dest

   translates to
            [user]
	    SET PATH=%path%;c:\windows;c:\windows\system;c:\chiefpro

6. A number of bug fixes.

7. AutoCalc will now attempt to use the uncompressed sizes of any
   ZIP files listed in $DISK lines, and $UNZIP lines, in calculating
   the required disk space.

8. When a new project is created, AutoCalc will now automatically add the
   main ChiefPro binaries into the project, so that they will be copied to
   DISK #1 automatically. This facility is dependent on the ChiefPro files
   remaining in _exactly_ the same place as they were installed to. If you
   move the files to another place, please edit the AUTOCALC.INI file to
   point to the correct location.


9. New reserved word: $SOURCE-DRIVE
   This points to the drive from which the  installation took place 
   (i.e., the root directory of the directory returned by $SOURCEDIR).
   This reserved word returns only a drive letter plus a colon (e.g., A:).
   If the source directory is a UNC path name, then this reserved word 
   returns the root directory of that path (e.g., \\CHIEF_SERVER1\DRIVE_C). 
   In either case, there is no trailing back-slash.
 
   NOTE: You cannot assign any value to this reserved word. You can only use
   it within other commands/expressions.
